package com.zh.note.leetcode.greedy;

/**
 * 55. 跳跃游戏
 * <p>
 * 输入：nums = [2,3,1,1,4]
 * 输出：true
 * 解释：可以先跳 1 步，从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。
 */
public class LC_55_canJump {

    public static boolean canJump(int[] nums) {
        int cover = 0;
        if (nums.length == 1) {// 只有一个元素，就是能达到
            return true;
        }
        for (int i = 0; i <= cover; i++) {  // 注意这里是小于等于cover
            cover = Math.max(i + nums[i], cover);
            if (cover >= nums.length - 1) { // 说明可以覆盖到终点了
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        int[] nums = {2, 3, 1, 1, 4};
        System.out.println(canJump(nums));
    }
}

